export type ComponentType = 'a-input' | 'a-select' | 'a-tree-select' | 'a-radio-group' | 'a-checkbox-group' | 'a-textarea'

// 表单配置类型
export interface FormItemsType {
  label: string
  type: ComponentType // 组件类型（暂时满足这些，之后补充）
  key: string // 字段
  disabled?: boolean // 是否禁用
  show?: boolean // 是否显示
  eventName?: string // 事件名称
  colLayout?: any // 布局  { span: 24 }   一行放一个
  placeholder?: string
  rules?: any[] // 校验规则
  options?: any[] // 下拉框数组 | 多选框数组
  [key: string]: any
}

// 映射生成
export const componentMap = new Map<ComponentType, any>()
componentMap.set('a-input', null)
componentMap.set('a-select', 'a-select-option')
componentMap.set('a-tree-select', null)
componentMap.set('a-radio-group', 'a-radio')
componentMap.set('a-checkbox-group', 'a-checkbox')
componentMap.set('a-textarea', null)
// export { componentMap }

export interface ModalConfigType {
  title: string // 弹框标题
  width: string // 弹框宽度
  cancelText: string // 自定义取消按钮名称
  okText: string // 自定义提交按钮名称
  maskClosable: boolean // 点击蒙层是否允许关闭
}

export interface FormConfigType {
  labelAlign: 'left' | 'right' // label 标签的文本对齐方式
  labelCol: { style: { width: string } } // 输入框左边文字的宽度
  layout: 'horizontal' | 'vertical' | 'inline' // 'horizontal'|'vertical'|'inline'  文字在输入框的左边 | 上边
}

export interface FormItemConfigType {
  colon: boolean // label后是否加 (冒号):
}

export interface CrudConfigType {
  modalConfig: ModalConfigType // 弹窗配置
  formConfig: FormConfigType // 表单配置
  formItemConfig: FormItemConfigType // 表单项配置
}

export interface FormItemType {
  [key: string]: string
}

export type FormType = Record<string, string | string[]>
